package com.finance.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 卡消费数据实体类
 * @author finance
 */
@Data
@TableName("ods_card_consumption")
@ApiModel(description = "卡消费数据")
public class CardConsumption {
    
    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键ID")
    private Long id;
    
    /**
     * 卡消费时间（购票时间）
     */
    @ApiModelProperty(value = "卡消费时间（购票时间）", required = true)
    private LocalDateTime consumptionTime;
    
    /**
     * 消费影城名称
     */
    @ApiModelProperty(value = "消费影城名称", required = true)
    private String cinemaName;
    
    /**
     * 影城ID
     */
    @ApiModelProperty(value = "影城ID", required = true)
    private String cinemaId;
    
    /**
     * 消费影城编码
     */
    @ApiModelProperty(value = "消费影城编码", required = true)
    private String cinemaCode;
    
    /**
     * 消费影城所属区域
     */
    @ApiModelProperty(value = "消费影城所属区域", required = true)
    private String cinemaArea;
    
    /**
     * 消费订单号
     */
    @ApiModelProperty(value = "消费订单号", required = true)
    private String orderNo;
    
    /**
     * 消费使用卡号
     */
    @ApiModelProperty(value = "消费使用卡号", required = true)
    private String cardNo;
    
    /**
     * 卡类型，例如：储值卡
     */
    @ApiModelProperty(value = "卡类型，例如：储值卡", required = true)
    private String cardType;
    
    /**
     * 消费使用卡类型编码
     */
    @ApiModelProperty(value = "消费使用卡类型编码", required = true)
    private String cardTypeCode;
    
    /**
     * 系统内对应卡政策，例如：钻石会员卡
     */
    @ApiModelProperty(value = "系统内对应卡政策，例如：钻石会员卡", required = true)
    private String cardPolicy;
    
    /**
     * 消费使用卡对应卡政策编码
     */
    @ApiModelProperty(value = "消费使用卡对应卡政策编码", required = true)
    private String cardPolicyCode;
    
    /**
     * 商品类型：影票，商品
     */
    @ApiModelProperty(value = "商品类型：影票，商品", required = true)
    private String productType;
    
    /**
     * 商品名称（影票为影片名称，商品为商品名称）
     */
    @ApiModelProperty(value = "商品名称（影票为影片名称，商品为商品名称）", required = true)
    private String productName;
    
    /**
     * 消费影票数
     */
    @ApiModelProperty(value = "消费影票数")
    private Integer ticketCount;
    
    /**
     * 影厅名称
     */
    @ApiModelProperty(value = "影厅名称")
    private String hallName;
    
    /**
     * 场次放映时间
     */
    @ApiModelProperty(value = "场次放映时间")
    private LocalDateTime showTime;
    
    /**
     * 商品价格，单位：分
     */
    @ApiModelProperty(value = "商品价格，单位：分", required = true)
    private BigDecimal productPrice;
    
    /**
     * 卡消费金额，单位：分
     */
    @ApiModelProperty(value = "卡消费金额，单位：分", required = true)
    private BigDecimal consumptionAmount;
    
    /**
     * 消费渠道，例如：POS端渠道
     */
    @ApiModelProperty(value = "消费渠道，例如：POS端渠道", required = true)
    private String consumptionChannel;
    
    /**
     * 操作员
     */
    @ApiModelProperty(value = "操作员")
    private String operator;
    
    /**
     * 操作员工号
     */
    @ApiModelProperty(value = "操作员工号")
    private String operatorCode;
    
    /**
     * 发卡影城名称
     */
    @ApiModelProperty(value = "发卡影城名称", required = true)
    private String issuingCinemaName;
    
    /**
     * 发卡影城编码
     */
    @ApiModelProperty(value = "发卡影城编码", required = true)
    private String issuingCinemaCode;
    
    /**
     * 发卡影城所属区域
     */
    @ApiModelProperty(value = "发卡影城所属区域", required = true)
    private String issuingCinemaArea;
    
    /**
     * 发卡影城所属区域编码
     */
    @ApiModelProperty(value = "发卡影城所属区域编码", required = true)
    private String issuingCinemaAreaCode;
    
    /**
     * 消费影城所属区域编码
     */
    @ApiModelProperty(value = "消费影城所属区域编码", required = true)
    private String consumptionCinemaAreaCode;
    
    /**
     * 会员ID
     */
    @ApiModelProperty(value = "会员ID", required = true)
    private String memberId;

    /**
     * 数据所属日期
     */
    @ApiModelProperty(value = "数据所属日期")
    private String searchDate;

    /**
     * 退票手续费金额，单位：分
     */
    @ApiModelProperty(value = "退票手续费金额，单位：分")
    private BigDecimal refundFee;
} 